#pragma once
#include<vector>
#include<iostream>
//函数指针
typedef void (*task_t)();

void PrintLog()
{
    std::cout<<"我是一个打印的任务"<<std::endl;
}

void Downloaad()
{
    std::cout<<"我是一个下载的任务"<<std::endl;
}

void UpLoad()
{
    std::cout<<"我是一个上传的任务"<<std::endl;
}

//任务管理：
class TaskManager
{
    public:
    TaskManager()
    {
        //随机数种子
        srand(time(nullptr));
    }
    ~TaskManager()
    {}
    //注册任务：
    //向_tasks中注册任务：
    void Register(task_t t)
    {
        _tasks.push_back(t);
    }
    int Code()
    {
        //随机选一个任务的下标：
        return rand()%_tasks.size();
    }
    void Execute(int code)
    {
        //传过来的就是数组下标，根据下标调用对应任务;
        //进行合法性检查：
        if(code>=0&&code<_tasks.size())
        {
            //调用相应任务：
            _tasks[code]();
        }
    }
    private:
    //对多个任务进行管理使用vector
    std::vector<task_t> _tasks;
};